<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //filter 过滤 获取满足条件（return）的内容，放到新数组里
        //不会修改原来数组
        //返回值：新数组
        // var arr=[10,20,30,40,50];
        // var res=arr.filter((item,index)=>{
        //     return item>=30
        // })
        // console.log(res);
        // console.log(arr);


        // //find 查找 获取满足条件（return）的第一个内容
        // //不会修改原来数组
        // //返回值：满足条件的第一个内容
        // var arr=[10,20,30,40,50];
        // var res=arr.find((item,index)=>{
        //     return item>=30
        // })
        // console.log(res);
        // console.log(arr);

        //findIndex 查找 获取满足条件（return）的第一个内容索引下标
        //不会修改原来数组
        //返回值：满足条件的第一个内容索引下标
        // var arr=[10,20,30,40,50];
        // var res=arr.findIndex((item,index)=>{
        //     return item>=30
        // })
        // console.log(res);
        // console.log(arr);

        // //every 每一个  每一个内容都满足条件，结果才为true
        // //不会修改原来数组
        // //返回值：true/false
        // var arr=[100,20,30,40,50];
        // var res=arr.every((item,index)=>{
        //     return item>=30
        // })
        // console.log(res);
        // console.log(arr);


        //some
        //只要有一个内容都满足条件，结果就为true; 所有的都不满足条件结果才为false
        //不会修改原来数组
        //返回值：true/false
        // var arr=[100,20,30,40,50];
        // var res=arr.some((item,index)=>{
        //     return item>=30
        // })
        // console.log(res);
        // console.log(arr);


        // reduce(函数，初始值) 从左向右计算（一般用于求和）  
        //不会修改原来数组
        //返回值：最终的结果(return)
        // var arr=[10,20,30,40,50];
        // //result 上一步计算的结果
        // //第一轮循环 result 就是数组的第一项 10   item 数组的第二项 20  index:1
        // //第二轮循环 result 上一步计算的结果 30   item 数组的第三项 30  index:2
        // //第三轮循环 result 上一步计算的结果 60   item 数组的第四项 40  index:3
        // //第四轮循环 result 上一步计算的结果 100   item 数组的第五项 50 index:4
        // // 150
        // var res=arr.reduce((result,item,index)=>{
        //     console.log(result,item,index);
        //     return result+item;
        // })
        // console.log(res);
        // console.log(arr);



        // var arr=[10,20,30,40,50];
        // //result 上一步计算的结果
        // //第一轮循环 result 就是设置的初始值 0    item 数组的第一项 10  index:0
        // //第二轮循环 result 上一步计算的结果 10   item 数组的第二项 20  index:1
        // //第三轮循环 result 上一步计算的结果 30   item 数组的第三项 30  index:2
        // //第四轮循环 result 上一步计算的结果 60   item 数组的第四项 40  index:3
        // //第五轮循环 result 上一步计算的结果 100  item 数组的第五项 50  index:4
        // // 150
        // var res=arr.reduce((result,item,index)=>{
        //     console.log(result,item,index);
        //     return result+item;
        // },0)
        // console.log(res);
        // console.log(arr);


        // var arr=[
        //     {n:10,str:"aaa"},
        //     {n:20,str:"aaa"},
        //     {n:30,str:"aaa"},
        //     {n:40,str:"aaa"}
        // ];
        // var res=arr.reduce((result,item,index)=>{
        //     console.log(result,item,index);
        //     return result+item.n;
        // },0)
        // console.log(res);
        // console.log(arr);


        //  reduceRight(函数，初始值) 从右向左计算（一般用于求和）  
        // 不会修改原来数组
        // 返回值：最终的结果(return)
        var arr=[10,20,30,40,50];
        var res=arr.reduceRight((result,item,index)=>{
            console.log(result,item,index);
            return result+item;
        },0)
        console.log(res);
        console.log(arr);

    </script>
</body>
</html>